using System.Threading.Tasks;
using MinimalistFoodStreet.BackEnd.Infrastructure.Attributes;
using MinimalistFoodStreet.BackEnd.Infrastructure.Dtos.Request.Functions;
using MinimalistFoodStreet.BackEnd.Infrastructure.Dtos.Request.Tables;
using MinimalistFoodStreet.BackEnd.Infrastructure.Dtos.Response;

namespace MinimalistFoodStreet.BackEnd.Server.IServer.Tables
{
    [ProvideClassOrInterface]
    public interface IGoodsServer
    {
        Task<ResponseApiDto> AddAsync(RequestCreateGoodsDto dto);
        Task<ResponseApiDto> UpdateAsync(RequestUpdateGoodsDto dto);
        Task<ResponseApiDto> DeleteAsync(RequestDeleteGoodsDto dto);
        Task<ResponseApiDto> DetailAsync(int id);
        Task<ResponseApiDto> PaginationAsync(int page, int limit, string? key, int? sid, int? gtid, int? isShelve);
        Task<ResponseApiDto> SetIsShelve(SetIsShelveDto dto);
        Task<ResponseApiDto> SetTopLevel(SetTopLevelDto dto);
        Task<ResponseApiDto> Replenishment(ReplenishmentDto dto);
        Task<ResponseApiDto> GetGoodTypeCount(int sid);
        Task<ResponseApiDto> GetGoodType();
        Task<ResponseApiDto> GetGoodHot(int page, int limit);
        Task<ResponseApiDto> GetGoodPromote(int page, int limit);
        Task<ResponseApiDto> GetGoodPagnation(int page, int limit, int? gtid, string? key);
        Task<ResponseApiDto> GetGoodDetail(int id, int bid);
    }
}